/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package agenda.calendario.DAL;

import agenda.calendario.Compromisso;
import framework.dal.BasicDAL;
import framework.dal.Conexao;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author Sergio Carlos Peres
 */
public class CompromissoDAL extends BasicDAL{
    
    public CompromissoDAL() {
        con = new Conexao();
    }
    
    @Override
    public void salvar(Object o) {
        String sql;
        
        Compromisso compromisso = (Compromisso) o;
        if (compromisso.getCodigoContato() == -1)
            sql = "INSERT INTO item "
                + "(compromisso, datahora, descr, endereco, status) VALUES ('"
                + compromisso.getCompomisso() + "', '" + compromisso.getData() + "', '"
                + compromisso.getDesc() + "', '" + compromisso.getEndereco() + "', 'F')";
        else 
            sql = "INSERT INTO item "
                + "(compromisso, datahora, descr, idcontato, endereco, status) VALUES ('"
                + compromisso.getCompomisso() + "', '" + compromisso.getData() + "', '"
                + compromisso.getDesc() + "', " + compromisso.getCodigoContato() + ", '"
                + compromisso.getEndereco()  + "', 'F')";
        
        con.conecta();
        con.executeScriptVoid(sql);
        con.desconecta();
    }
    
    @Override
    public Object buscaAlterar(Object o) {
        Compromisso compromisso = (Compromisso) o;
        String sql = "SELECT * FROM item WHERE compromisso LIKE '" 
                + compromisso.getCompomisso() + "%' AND datahora = '" 
                + compromisso.getData().toString() + "'";
        con.conecta();
        con.executeSelect(sql);
        try {
            con.resultset.next();
            compromisso.setIdentifier(con.resultset.getInt("id"));
            compromisso.setCodigoContato(con.resultset.getInt("idcontato"));
            compromisso.setDesc(con.resultset.getString("descr"));
            compromisso.setEndereco(con.resultset.getString("endereco"));
            compromisso.setStatus(con.resultset.getString("status").equals("T"));
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro na busca de um compromisso!!!");
        }
        con.desconecta();
        return compromisso;
    }
    
    @Override
    public void alterar(Object o) {
        String sql;
        
        Compromisso compromisso = (Compromisso) o;
        if (compromisso.getCodigoContato() == -1) 
            sql = "UPDATE item SET "
                + "compromisso = '" + compromisso.getCompomisso() 
                + "', datahora = '" + compromisso.getData() 
                + "', descr = '" + compromisso.getDesc()
                + "', endereco = '" + compromisso.getEndereco()
                + "' WHERE id = " + compromisso.getIdentifier();
        else 
            sql = "UPDATE compromisso SET "
                + "compromisso = '" + compromisso.getCompomisso() 
                + "', datahora = '" + compromisso.getData() 
                + "', descr = '" + compromisso.getDesc()
                + "', endereco = '" + compromisso.getEndereco()
                + "', idcontato = " + compromisso.getCodigoContato()
                + "' WHERE id = " + compromisso.getIdentifier();
        
        con.conecta();
        con.executeScriptVoid(sql);
        con.desconecta();
    }
    
    public void altetarStatus(int codigoCompromisso, boolean status) {
        String sql = "UPDATE item SET "
                + "status = '" + ((status) ? "T" : "F") 
                + "' WHERE id = " + codigoCompromisso;
        
        con.conecta();
        con.executeScriptVoid(sql);
        con.desconecta();
    }
    
    @Override
    public void delet(int codigo) {
        con.conecta();
        try {
            String sql = "SELECT compromisso FROM item WHERE id = " + codigo;
            con.executeSelect(sql);
            con.resultset.first();
            String confirma;
            confirma = "Tem certeza que desena Excluir : \n\n\t" + con.resultset.getString("compromisso") + " ?";

            int opcao = JOptionPane.showConfirmDialog(null,confirma,"Exclusão ",JOptionPane.YES_NO_OPTION);
            if (opcao == JOptionPane.YES_OPTION)
            {
                sql = "DELETE FROM item WHERE id = " + codigo;
                int conseguiu = con.executeScriptInt(sql);
                if (conseguiu == 1)
                {
                    JOptionPane.showMessageDialog(null,"Exclusão realizada com sucesso!!!");
                }
            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null,"Erro ao tentar excluir...\n\n\tErro: "+ex);
        }
        con.desconecta();
    }
}
